package com.atguigu.java;

import org.junit.Test;

import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Comparator;

public class java9Test {
    URL url;

    {
        try {
            url = new URL("http://www.atguigu.com");
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }

    //java9新特性五：钻石操作符的升级
    @Test
    public void test2() {
        //钻石操作符与匿名内部类在java8中无法共存，在java9中可以
        Comparator<Object> com = new Comparator<>() {
            @Override
            public int compare(Object o1, Object o2) {
                return 0;
            }
        };

        //jdk7的新特性：类型推断
        ArrayList<String> list = new ArrayList<>();
    }

    //java9新特性6：try操作升级
    public static void main(String[] args) {
        //java 8之前关闭流的操作
//        InputStreamReader reader = null;
//        try {
//            reader = new InputStreamReader(System.in);
//            char[] c = new char[20];
//            int len;
//            while((len = reader.read(c)) != -1){
//                String str = new String(c,0,len);
//                System.out.println(str);
//            }
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        } finally {
//            if(reader != null) {
//                try {
//                    reader.close();
//                } catch (IOException e) {
//                    throw new RuntimeException(e);
//                }
//            }
//        }

        //java8中的关闭操作:这种写法实现了资源的自动关闭
        //要求自动关闭的资源的初始化那必须在小括号中
//        try (InputStreamReader reader = new InputStreamReader(System.in)) {
//            char[] cbuf = new char[20];
//            int len;
//            if ((len = reader.read(cbuf)) != -1) {
//                String str = new String(cbuf, 0, len);
//                System.out.println(str);
//            }
//
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        }


        //java9中的资源关闭操作：需要自动关闭的实例化是可以放在括号外的
        try(InputStreamReader reader = new InputStreamReader(System.in);){
            char[] cubf = new char[20];
            int len;
            if((len = reader.read(cubf)) != -1){
                String str = new String(cubf,0,len);
                System.out.println(str);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}
